package cn.virens.packet.handler;

import org.tio.core.ChannelContext;

import cn.virens.TioUtil;
import cn.virens.common.StringUtil;
import cn.virens.packet.ReadPacket;

/**
 * 包处理事件
 * 
 * @作者   : loioi
 * @创建时间 :2017年12月10日 下午1:28:24
 */
public abstract class AbstractLoginHandler extends AbstractHandler {

	@Override
	public void read(ReadPacket packet, ChannelContext channelContext) {
		TioUtil.heartTimes(channelContext, (t) -> t.incrementAndGet());
		TioUtil.heartIdle(channelContext, (t) -> t.getAndSet(0));
		String imsi = TioUtil.imei(channelContext);

		if (StringUtil.isEmpty(imsi)) {
			logger.error("设备未登录:{}", TioUtil.name(channelContext));
		} else {
			read0(imsi, packet, channelContext);
		}
	}

	public abstract void read0(String imsi, ReadPacket packet, ChannelContext channelContext);
}
